Some applications utilizing computer image synthesis, such as film production, may demand “photo-realistic” frames of animations. Software for such applications may utilize “ray casting” to simulate the individual transport of rays of light in a model of real three-dimensional (3D) space. Such software may enable simulating effects such as reflection, refraction, caustics, sub-surface scatting, and other properties of physics and reality.
In ray-casting, a computer may trace lines, originating at a virtual camera or at light sources or both, and cast them throughout the 3D model scene. The computer may apply linear algebraic operations to solve intersections between each line and each polygon of objects in the scene. Each intersection may result in the computer casting another layer of rays from the intersected position in new directions, as dictated by the material properties associated with each polygon's “texture.” To produce high quality results, these processes can be extremely resource-intensive for the computer, requiring hours or even days to be spent synthesizing images for individual frames of a modern film with computer animation (e.g., “rendering”).
Other applications, such as real-time interactive applications (e.g., CAD/3D modeling, imaging, games, virtual reality, etc.) may utilize matrix projection to generate an image (e.g. rasterizing pixels from lines drawn between projected points). Using matrix projection, a computer may transform an object, mesh, or scene by specific characteristics linked to physical camera transformations (e.g., position, rotation, scale, field of view, etc.) and express these transformations mathematically as a matrix (e.g. for 3D matrix projection, transformations such as translate, rotate, and scale can be encoded into a single 4×4 matrix.). Real-time rasterization using matrix projection is different from ray casting and is generally quick enough to generate pixels based on camera-relative point data (used to draw lines and shade triangles), but imagery generated may suffer from artifacts (e.g. “aliasing”) and sampling bias (e.g. “moire”) and require additional computational overhead in post-processing operations (e.g., lens warp, depth of field, programmable effects, etc.) to address artifacts or improve sampling. Dedicated hardware may be used in the computer (or processing resources of the computer may be allocated, as available) to attempt to compensate for these image artifacts and/or to perform additional processing, but these processing resources may raise costs of producing and/or operating the computer (costs may be in terms of producing the dedicated hardware, opportunity costs of committing processing resources to image quality over using those resources for other tasks, or the like, or combinations thereof). Furthermore, the methods used to minimize artifacts and/or improve the aesthetic quality of an image may not address the underlying cause of the artifact, replacing one inaccuracy with another (less noticeable) inaccuracy.